import 'dart:io';

//
void main() async {
  try {
    int result1 = await getFirstData(); //
    print(result1);
    int result2 = await getSecondData(); //
    print(result2);
    int result3 = await getThirdData(); //
    print(result3);
  } catch (e) {
    // print(e);
    if (e is Exception) {
      print(e.toString());
    }
  }
}

// async / await 让我们用同步的方式去写异步
// 前端鸿蒙 async 必须配套await出现
// await总是会强制等待后面的promise进行resolve
// 如果没有resolve 需要使用try catch进行捕获

Future<int> getFirstData() {
  return Future<int>(() {
    sleep(Duration(seconds: 2));
    print("获取第一层数据成功");
    return 1;
  });
}

Future<int> getSecondData() {
  return Future<int>(() {
    sleep(Duration(seconds: 2));
    print("获取第二层数据成功");
    return 2;
  });
}

Future<int> getThirdData() {
  return Future<int>(() {
    sleep(Duration(seconds: 2));
    throw new Exception("获取第三层数据失败");
    // print("获取第三层数据成功");
    // return 3;
  });
}
